///done!~
/*
请你设计一个可以解释字符串 command 的 Goal 解析器 。command 由 "G"、"()" 和/或 "(al)" 按某种顺序组成。Goal 解析器会将 "G" 解释为字符串 "G"、"()" 解释为字符串 "o" ，"(al)" 解释为字符串 "al" 。然后，按原顺序将经解释得到的字符串连接成一个字符串。

给你字符串 command ，返回 Goal 解析器 对 command 的解释结果。

 

示例 1：

输入：command = "G()(al)"
输出："Goal"
解释：Goal 解析器解释命令的步骤如下所示：
G -> G
() -> o
(al) -> al
最后连接得到的结果是 "Goal"

示例 2：

输入：command = "G()()()()(al)"
输出："Gooooal"

示例 3：

输入：command = "(al)G(al)()()G"
输出："alGalooG"

 

提示：

    1 <= command.length <= 100
    command 由 "G"、"()" 和/或 "(al)" 按某种顺序组成

通过次数13,234
提交次数15,924
*/

/*
 * @Author:gxx
 * @Date: 2021-04-01 11:04:12
 * @Last Modified by: gxx
 * @Last Modified time: 2021-04-01 11:04:12
 * @Description: 设计goal解析器
*/

class Solution {
public:
    string interpret(string command) {
        int len = command.length();
        string result;
        for(int i = 0; i < len; i++){   
            if(command[i] !='(' && command[i] != ')'){
                result += command[i];
            }else if(((i+1) <len)&&command[i] == '(' && command[i+1] != ')'){
                continue;
            }else if (((i+1) <len)&&command[i] =='(' && command[i+1] ==')'){
                result += 'o';
                continue;
            }else if( i >0 && command[i] == ')' && command[i-1] != '('){
                continue;
            }
        }
        cout <<result<<endl;
        return result;
    }
};